/*******************************************************************************
 * Copyright (c) 2013 GigaSpaces Technologies Ltd. All rights reserved
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
 * the License. You may obtain a copy of the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
 * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
 * specific language governing permissions and limitations under the License.
 ******************************************************************************/
package org.cloudifysource.restclient.exceptions;

/**
 * 
 * @author yael
 * Base class for all exception thrown by the rest client.
 *
 *          messageCode - code for message formatting using a message bundle.
 *          messageFormattedText - the default formatted message that will be returned to consumers of this client
 *          verbose - complete stack trace of the cause exception.
 * 
 */
public class RestClientException extends Exception {

	/**
	 * UID for serialization.
	 */
	private static final long serialVersionUID = 1L;

	private final String messageCode;
	private final Object[] messageArgs;
	private final String messageFormattedText;
	private final String verbose;

	public RestClientException(final String messageCode, final String messageFormattedText, final String verbose) {
		this(messageCode, messageFormattedText, verbose, (Object[]) null /*messageArgs*/);
	}
	
	public RestClientException(final String messageCode, final String messageFormattedText, final String verbose, 
			final Object[] messageArgs) {
		this.messageCode = messageCode;
		this.messageFormattedText = messageFormattedText;
		this.verbose = verbose;
		this.messageArgs = messageArgs;
	}

	public String getMessageCode() {
		return messageCode;
	}
	
	public Object[] getMessageArgs() {
		return messageArgs;
	}

	public String getMessageFormattedText() {
		return messageFormattedText;
	}

	public String getVerbose() {
		return verbose;
	}

}
